/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.uoc.tdp.pac4.conexion;

import edu.uoc.tdp.pac4.beans.Perfil;
import edu.uoc.tdp.pac4.beans.Taller;
import edu.uoc.tdp.pac4.beans.Usuari;
import edu.uoc.tdp.pac4.cliente.Principal;
import edu.uoc.tdp.pac4.comun.GestorConexionInterface;
import edu.uoc.tdp.pac4.i18n.TDSLanguageUtils;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.RemoteException;
import java.sql.SQLException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import javax.swing.ButtonGroup;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextField;

/**
 *
 * @author andres
 */
public class GestionConexionFormTaller extends JInternalFrame {
    
    
    private GestorConexionInterface conexion;
    private JDesktopPane formTallerWindow;
    private JLabel lbl_titol;
    private JButton btn_update;
    private JButton btn_back;    
    private JButton btn_add;
    private JLabel lbl_titol1;
     
    JLabel lbl_nom = new JLabel(TDSLanguageUtils.getMessage("Talleres.Taller"));                    ;
    JLabel lbl_cif = new JLabel(TDSLanguageUtils.getMessage("Talleres.Cif"));                    ;
    JLabel lbl_adresa = new JLabel(TDSLanguageUtils.getMessage("Talleres.Direccion"));                    ;
    JLabel lbl_capacitat = new JLabel(TDSLanguageUtils.getMessage("Talleres.Capacidad"));                    
    JLabel lbl_telefon = new JLabel(TDSLanguageUtils.getMessage("Talleres.Telefono"));                        
    JLabel lbl_web = new JLabel(TDSLanguageUtils.getMessage("Talleres.Web"));
    JLabel lbl_actiu = new JLabel(TDSLanguageUtils.getMessage("Talleres.Activo"));
    JLabel lbl_capTaller = new JLabel(TDSLanguageUtils.getMessage("Talleres.Jefe"));
    JLabel lbl_alta = new JLabel(TDSLanguageUtils.getMessage("Talleres.Alta"));                        
    JLabel lbl_modificacio = new JLabel(TDSLanguageUtils.getMessage("Talleres.Modificacion"));
    JLabel lbl_baixa = new JLabel(TDSLanguageUtils.getMessage("Talleres.Baja"));  
    JLabel showAlta ;
    JLabel showModificacio ;                        
    JLabel showBaixa ;
                     
    JTextField txt_id;
    JTextField txt_nom;                    
    JTextField txt_cif;
    JTextField txt_adresa;
    JTextField txt_capacitat;
    JTextField txt_telefon;
    JTextField txt_web;    
    
    JComboBox llistaTallers ;
    JComboBox llistaUsuaris ;
    
    ArrayList<Taller> tallers ;
    ArrayList<Usuari> usuaris;
    
         ButtonGroup actiu ;
        JRadioButton actiuSi ;
        JRadioButton actiuNo ;
    
    public GestionConexionFormTaller(GestorConexionInterface conexion) {
        this.conexion = conexion;

        txt_id = new JTextField();
        txt_nom = new JTextField();                    
        txt_cif = new JTextField();   
        txt_adresa = new JTextField();   
        txt_capacitat = new JTextField();
        txt_telefon = new JTextField();
        txt_web = new JTextField();         
        
               
        showAlta = new JLabel();
        showModificacio = new JLabel();
        showBaixa = new JLabel();

        actiu = new ButtonGroup();
        actiuSi = new JRadioButton(TDSLanguageUtils.getMessage("Talleres.Si"), false);
        actiuNo = new JRadioButton(TDSLanguageUtils.getMessage("Talleres.No"), true);

        actiu.add(actiuSi);
        actiu.add(actiuNo);

        
        /* Llista de tipus d'usuari */

        try {
            usuaris = conexion.getLlistaUsuaris();
            llistaUsuaris = new JComboBox();
            
            for(int i = 0; i < usuaris.size(); i++ ) {
                Usuari u = usuaris.get(i);
                System.out.println("User : "+u.toString());
                llistaUsuaris.addItem(u);
            }
        } catch (RemoteException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();            
        }
      
        formTallerWindow=new JDesktopPane();
        
        lbl_titol1 = new JLabel(TDSLanguageUtils.getMessage("Talleres.EdicionTaller"));
        lbl_titol1.setForeground(Color.white);
        lbl_titol1.setBounds(200, 10, 200, 40);

        lbl_nom.setForeground(Color.white);
        lbl_nom.setBounds(20, 75, 200, 25);
        txt_nom.setBounds(200, 75, 200, 25);
                        
        lbl_cif.setForeground(Color.white);
        lbl_cif.setBounds(20, 110, 200, 25);
        txt_cif.setBounds(200, 110, 200, 25);

        lbl_adresa.setForeground(Color.white);
        lbl_adresa.setBounds(20, 145, 200, 25);
        txt_adresa.setBounds(200, 145, 200, 25);
        
        lbl_capacitat.setForeground(Color.white);
        lbl_capacitat.setBounds(20, 180, 200, 25);
        txt_capacitat.setBounds(200, 180, 200, 25);
                        
        lbl_telefon.setForeground(Color.white);
        lbl_telefon.setBounds(20, 215, 200, 25);
        txt_telefon.setBounds(200, 215, 200, 25);                        
                        
        lbl_web.setForeground(Color.white);
        lbl_web.setBounds(20, 250, 200, 25);
        txt_web.setBounds(200, 250, 200, 25);                        

        lbl_capTaller.setForeground(Color.white);
        lbl_capTaller.setBounds(20, 285, 200, 25);
        llistaUsuaris.setBounds(200, 285, 200, 25);             

        lbl_actiu.setForeground(Color.white);
        lbl_actiu.setBounds(20, 320, 200, 25);
        actiuSi.setForeground(Color.white);
        actiuSi.setBounds(200, 320, 50, 25);
        actiuNo.setForeground(Color.white);                        
        actiuNo.setBounds(250, 320, 50, 25);

        
        lbl_alta.setForeground(Color.white);
        lbl_alta.setBounds(20, 355, 200, 25);        
        showAlta.setForeground(Color.white);
        showAlta.setBounds(200, 355, 200, 25);     
        
        lbl_modificacio.setForeground(Color.white);
        lbl_modificacio.setBounds(20, 390, 200, 25);     
        showModificacio.setForeground(Color.white);
        showModificacio.setBounds(200, 390, 200, 25);     

        
        lbl_baixa.setForeground(Color.white);
        lbl_baixa.setBounds(20, 425, 200, 25);     
        showBaixa.setForeground(Color.white);
        showBaixa.setBounds(200, 425, 200, 25);     
        
        formTallerWindow.add(lbl_titol1);
        
        formTallerWindow.add(lbl_nom);
        formTallerWindow.add(lbl_cif);
        formTallerWindow.add(lbl_adresa);        
        formTallerWindow.add(lbl_capacitat);
        formTallerWindow.add(lbl_telefon);
        formTallerWindow.add(lbl_web);
        formTallerWindow.add(lbl_actiu);       
        formTallerWindow.add(lbl_capTaller);                         

        formTallerWindow.add(txt_nom);
        formTallerWindow.add(txt_cif);
        formTallerWindow.add(txt_adresa);        
        formTallerWindow.add(txt_capacitat);
        formTallerWindow.add(txt_telefon);
        formTallerWindow.add(txt_web);                        

        formTallerWindow.add(actiuSi);                        
        formTallerWindow.add(actiuNo);                             
        formTallerWindow.add(llistaUsuaris);                             
        //formTallerWindow.add(llistaPerfils);                             
        //editUserWindow.add(btn_update);
        //editUserWindow.add(btn_back);
        this.add(formTallerWindow);
        
    }
  

    public void edicio(int id){
            
           SimpleDateFormat datas = new SimpleDateFormat("dd/MM/yyyy");
           Taller taller = new Taller();
                        
        try {
              taller = conexion.loadTaller(id);
              
        } catch (RemoteException e) {
                      e.printStackTrace();
        } catch(SQLException e) {
                      e.printStackTrace();                            
        }
        
     
        txt_id.setText(Integer.toString(taller.getId()));
        //txt_usuari.setText(user.getUsuari());
        txt_nom.setText(taller.getNom());
        txt_cif.setText(taller.getCif());
        txt_adresa.setText(taller.getAdresa());
        txt_capacitat.setText(Integer.toString(taller.getCapacitat()));      
        txt_telefon.setText(taller.getTelefon());
        txt_web.setText(taller.getWeb());        
        
         /* Predeterminem el perfil de l'usuari. Ho fem en tres passos 
         * 1.- Fem que el JComboBox sigui editable. Això ens permet predeterminat un valor.
         * 2.- Indiquem quin objecte serà el predeterminat (atribut de tipus Perfil perfil) de l'usuari
         * 3.- Fem que el JComboBox NO sigui editable.
         */
        
        llistaUsuaris.setEditable(true);
        llistaUsuaris.setSelectedItem(taller.getCapTaller());
        llistaUsuaris.setEditable(false);
           
           
        if(taller.getActiu() == true) {
            actiuSi.setSelected(true);
            actiuNo.setSelected(false);
        } else {
            actiuNo.setSelected(true);
            actiuSi.setSelected(false);
        }
        
          
   
        
        if(taller.getDataApertura() != null){
            showAlta.setText(datas.format(taller.getDataApertura()));
            System.out.println("Alta");
            formTallerWindow.add(lbl_alta);
            formTallerWindow.add(showAlta);                
        }
          if(taller.getDataModificacio() != null){
            showModificacio.setText(datas.format(taller.getDataModificacio()));                        
            formTallerWindow.add(lbl_modificacio); 
            formTallerWindow.add(showModificacio);                          
          }  
          
          if(taller.getDataBaixa() != null) {
            showBaixa.setText(datas.format(taller.getDataBaixa()));                        
            formTallerWindow.add(lbl_baixa);           
            formTallerWindow.add(showBaixa);               
          }
        
        btn_update = new JButton();
        btn_update.setText(TDSLanguageUtils.getMessage("Talleres.Update"));
        btn_update.setBounds(50, 500, 100, 40);
           
         this.btn_update.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent paramAnonymousActionEvent)   {

                try {
                    int n = Integer.parseInt(txt_capacitat.getText());

                if(txt_nom.getText().equals("")){
                        Principal.showError(TDSLanguageUtils.getMessage("Talleres.NoTaller"));
                } else {

                    if(txt_cif.getText().length()<1) {
                        Principal.showError(TDSLanguageUtils.getMessage("Talleres.NoCif"));
                    } else {
                        /* Tras las comprobaciones, creamos el objeto y lo guardamos en la db */
                        Taller t = new Taller();
                        t.setId(Integer.parseInt(txt_id.getText()));
                        t.setNom(txt_nom.getText());
                        t.setCif(txt_cif.getText());
                        t.setAdresa(txt_adresa.getText());
                        t.setCapacitat(Integer.parseInt(txt_capacitat.getText()));
                        t.setCapTaller((Usuari)llistaUsuaris.getSelectedItem());
                        t.setTelefon(txt_telefon.getText());
                        t.setWeb(txt_web.getText());
                        if(actiuSi.isSelected()) {
                            t.setActiu(true);
                        } else {
                            t.setActiu(false);
                        }
                           try {
                                    conexion.saveTaller(t);
                           } catch(RemoteException e) {
                               e.printStackTrace();
                           } catch (SQLException e) {
                               e.printStackTrace();
                           }
                    }
                }
                    
              } catch (NumberFormatException nfe) {
                    Principal.showError(TDSLanguageUtils.getMessage("Talleres.Number"));
              }

                
                
                
            };
         });
        
        btn_back = new JButton();
        btn_back.setText("Atras");
        btn_back.setBounds(200, 500, 100, 40);
        
       this.btn_back.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent paramAnonymousActionEvent)   {
       
               
            };
       });
                
        formTallerWindow.add(btn_update);
        formTallerWindow.add(btn_back);
    }

    
    
   public void nou(){
        btn_add = new JButton();
        btn_add.setText(TDSLanguageUtils.getMessage("Talleres.Add"));
        btn_add.setBounds(200, 500, 150, 40);
        
         this.btn_add.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent paramAnonymousActionEvent)   {
                
              try {
                int n = Integer.parseInt(txt_capacitat.getText());

                if(txt_nom.getText().equals("")){
                        Principal.showError(TDSLanguageUtils.getMessage("Talleres.NoTaller"));
                } else {

                    if(txt_cif.getText().length()<1) {
                        Principal.showError(TDSLanguageUtils.getMessage("Talleres.NoCif"));
                    } else {
                        /* Tras las comprobaciones, creamos el objeto y lo guardamos en la db */
                        Taller t = new Taller();
                        t.setNom(txt_nom.getText());
                        t.setCif(txt_cif.getText());
                        t.setAdresa(txt_adresa.getText());
                        t.setCapacitat(Integer.parseInt(txt_capacitat.getText()));
                        t.setCapTaller((Usuari)llistaUsuaris.getSelectedItem());
                        t.setTelefon(txt_telefon.getText());
                        t.setWeb(txt_web.getText());

                        if(actiuSi.isSelected()) {
                            t.setActiu(true);
                        } else {
                            t.setActiu(false);
                        }
                           try {
                               if(conexion.checkCif(t.getCif())) {
                                   Principal.showError(TDSLanguageUtils.getMessage("Talleres.CifDuplicado"));
                               } else {
                                    conexion.createTaller(t);
                               }
                           } catch(RemoteException e) {
                               e.printStackTrace();
                           } catch (SQLException e) {
                               e.printStackTrace();
                           }
                    
                    }

                }
                    
              } catch (NumberFormatException nfe) {
                    Principal.showError(TDSLanguageUtils.getMessage("Talleres.Number"));
              }
            };
         });
         
       formTallerWindow.add(btn_add);
         
   }
                
                
                
}
